.tests-metadata-state:
  image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}
  before_script:
    - source scripts/utils.sh
  artifacts:
    expire_in: 31d
    paths:
      - knapsack/
      - rspec/
      - crystalball/
    when: always

retrieve-tests-metadata:
  extends:
    - .tests-metadata-state
    - .test-metadata:rules:retrieve-tests-metadata
  # We use a smaller image for this job only (update-tests-metadata compiles some gems)
  image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-slim
  stage: prepare
  needs: []
  script:
    - apt-get update && apt-get install -y curl  # Not present in ruby-slim, so we add it manually
    - install_gitlab_gem
    - source ./scripts/rspec_helpers.sh
    - retrieve_tests_metadata

update-tests-metadata:
  extends:
    - .tests-metadata-state
    - .test-metadata:rules:update-tests-metadata
  stage: post-test
  dependencies:
    - retrieve-tests-metadata
    - generate-frontend-fixtures-mapping
    - setup-test-env
    - rspec migration pg14
    - rspec-all frontend_fixture
    - rspec unit pg14
    - rspec integration pg14
    - rspec system pg14
    - rspec background_migration pg14
    - rspec-ee migration pg14
    - rspec-ee unit pg14
    - rspec-ee integration pg14
    - rspec-ee system pg14
    - rspec-ee background_migration pg14
  script:
    - run_timed_command "retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document"
    - source ./scripts/rspec_helpers.sh
    - test -f "${FLAKY_RSPEC_SUITE_REPORT_PATH}" || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m"
    - update_tests_metadata
    - update_tests_mapping
